﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Xml.Linq;
using DTO;
using BUS;
using System.Collections.Generic;
using System.Xml;

namespace WebRaoVat
{
    public partial class NguoiDung : System.Web.UI.Page
    {
        public NguoiDungDTO NguoiDungDuocHien = new NguoiDungDTO();

        //Tin nhắn
        public List<TinNhanDTO> DSTinNhan = new List<TinNhanDTO>();
        public int SoTinChuaDoc = 0;

        protected void Page_Load(object sender, EventArgs e)
        {
            int MaNguoiDung = 0;
            try
            {
                MaNguoiDung = int.Parse(Request.QueryString["MaNguoiDung"].ToString());
            }
            catch (System.Exception ex)
            {
                Response.Redirect("Default.aspx");
                return;
            }

            NguoiDungDuocHien = NguoiDungBUS.getAlongCode(MaNguoiDung);
            Session["TrangHienTai"] = "NguoiDung.aspx?MaNguoiDung=" + MaNguoiDung.ToString();

            if ((Session["NguoiDangTinDuocXem"] == null || Session["NguoiDangTinDuocXem"].ToString().Length <= 0) &&
                (Session["NguoiDungDangDangNhap"] == null || Session["NguoiDungDangDangNhap"].ToString().Length <= 0))
            {
                Response.Redirect("Default.aspx");
                return;
            }

            if (Session["LoaiXemNguoiDung"] == null || Session["LoaiXemNguoiDung"].ToString().Length <= 0)
            {
                Session["LoaiXemNguoiDung"] = "2";
            }

            if (Session["NguoiDungDangDangNhap"] != null && Session["NguoiDungDangDangNhap"].ToString().Length > 0)
            {
                NguoiDungDTO NguoiDungDangDangNhap = NguoiDungBUS.layNguoiDungTheoTen(Session["NguoiDungDangDangNhap"].ToString());

                //Cập nhật thông tin liên quan
                if (!IsPostBack)
                {
                    txtUsernameCapNhat.Text = NguoiDungDangDangNhap.TenNguoiDung;
                    txtEmailCapNhat.Text = NguoiDungDangDangNhap.Email;
                    txtDiaChi.Text = NguoiDungDangDangNhap.DiaChi;
                    txtDienThoai.Text = NguoiDungDangDangNhap.DienThoai;
                }

                if (MaNguoiDung == NguoiDungDangDangNhap.MaNguoiDung)
                {
                    bKiemTra = true;

                    DSTinNhan.Clear();
                    DSTinNhan = TinNhanBUS.LayTinNhanTheoNguoiNhan(MaNguoiDung);

                    SoTinChuaDoc = 0;
                    for (int i = 0; i < DSTinNhan.Count; ++i)
                    {
                        if (DSTinNhan[i].Readed == 0)
                        {
                            SoTinChuaDoc++;
                        }
                    }
                }
                else
                {
                    bKiemTra = false;
                }
            }
            else
            {
                bKiemTra = false;
            }
        }

        protected void Page_PreInit(object sender, EventArgs e)
        {
            Page.Theme = ((XmlElement)XL_XML.ReadNodeSingle(XL_XML.ReadDocumentFile(Server.MapPath("Gui.xml")),
            "/GIAODIEN/THEME")).GetAttribute("ten");
        }

        public string LayTenNguoiGoiTin(int Ma)
        {
            return NguoiDungBUS.getAlongCode(Ma).TenNguoiDung;
        }

        public List<string> ErrorMessage = new List<string>();
        public bool bKiemTra = false;

        /// <summary>
        /// Cập nhật mật khẩu
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnLuu_Click(object sender, EventArgs e)
        {
            bool bKiemTra = false;
            ErrorMessage.Clear();

            NguoiDungDTO nguoiDung = new NguoiDungDTO();

            try
            {
                nguoiDung = NguoiDungBUS.layNguoiDungTheoTen(Session["NguoiDungDangDangNhap"].ToString());
            }
            catch (System.Exception ex)
            {
                nguoiDung = null;
            }

            if (nguoiDung != null)
            {
                if (txtMatKhauHienTai.Text.Trim().CompareTo(nguoiDung.MatKhau) != 0)
                {
                    bKiemTra = true;
                    ErrorMessage.Add("* Mật khẩu hiện tại không đúng");
                }
            }

            string strPassword = txtMatKhauMoi.Text.Trim();
            if (8 > strPassword.Length || strPassword.Length > 15)
            {
                bKiemTra = true;
                ErrorMessage.Add("* Mật khẩu tối thiểu 8 ký tự, tối đa 15 ký tự");
            }
            else
            {
                if (strPassword.CompareTo(txtMatKhauNhapLai.Text.Trim()) != 0)
                {
                    bKiemTra = true;
                    ErrorMessage.Add("* Mật khẩu mới nhập lại không đúng");
                }
            }

            if (bKiemTra == true)
            {
                return;
            }

            // Thành công
            nguoiDung.MatKhau = strPassword;

            try
            {
                NguoiDungBUS.Update(nguoiDung);
                ErrorMessage.Add("Đã lưu thành công !");
            }
            catch (System.Exception ex)
            {
                string t = ex.Message;
                //ErrorMessage.Add("Cập nhật mật khẩu không thành công !");
            }
        }

        public List<string> ListMessageUpdate = new List<string>();

        /// <summary>
        /// Cập nhật thông tin liên quan
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnCapNhat_Click(object sender, EventArgs e)
        {
            bool bKiemTra = false;
            NguoiDungDTO nguoiDung = NguoiDungBUS.layNguoiDungTheoTen(Session["NguoiDungDangDangNhap"].ToString());
            NguoiDungDTO nguoiDungCapNhat = NguoiDungBUS.getAlongCode(nguoiDung.MaNguoiDung);

            string strUsername = txtUsernameCapNhat.Text.Trim();
            string strEmail = txtEmailCapNhat.Text.Trim();

            if (strUsername.Length <= 0)
            {
                bKiemTra = true;
                ListMessageUpdate.Add("Tên đăng nhập không rỗng");
            }
            else if (strUsername.ToLower().CompareTo(nguoiDung.TenNguoiDung) != 0)
            {
                if (NguoiDungBUS.kiemTraTenTrung(strUsername.ToLower()) == true)
                {
                    bKiemTra = true;
                    ListMessageUpdate.Add("Tên người dùng này đã tồn tại");
                }
            }

            if (strEmail.Length <= 0)
            {
                bKiemTra = true;
                ListMessageUpdate.Add("Email không được rỗng");
            }
            else if (strEmail.ToLower().CompareTo(nguoiDung.Email) != 0)
            {
                if (NguoiDungBUS.kiemTraEmailTrung(strEmail.ToLower()) == true)
                {
                    bKiemTra = true;
                    ListMessageUpdate.Add("Email này đã có người sử dụng");
                }
            }

            if (bKiemTra == true)
            {
                return;
            }

            //Thành công
            string strDiaChi = txtDiaChi.Text.Trim();
            string strDienThoai = txtDienThoai.Text.Trim();

            try
            {
                nguoiDungCapNhat.TenNguoiDung = strUsername;
                nguoiDungCapNhat.Email = strEmail;
                nguoiDungCapNhat.DiaChi = strDiaChi;
                nguoiDungCapNhat.DienThoai = strDienThoai;

                if (NguoiDungBUS.Update(nguoiDungCapNhat) == true)
                {
                    Session["NguoiDungDangDangNhap"] = nguoiDungCapNhat.TenNguoiDung;
                    Response.Redirect("NguoiDung.aspx?MaNguoiDung=" + nguoiDungCapNhat.MaNguoiDung.ToString());
                }
                else
                {
                    ListMessageUpdate.Add("Cập nhật không thành công");
                }
            }
            catch (System.Exception ex)
            {
                ListMessageUpdate.Add("Cập nhật không thành công");
            }
        }

        public List<string> ListMessageNhanTin = new List<string>();

        protected void btnGoi_Click(object sender, EventArgs e)
        {
            bool bKiemTra = false;
            ListMessageNhanTin.Clear();
            string TenNguoiNhan = txtNguoiNhan.Text.Trim().ToLower();

            if (NguoiDungBUS.kiemTraTenTrung(TenNguoiNhan) == false)
            {
                bKiemTra = true;
                ListMessageNhanTin.Add("* Người nhận này không tồn tại");
            }

            string TieuDe = txtTieuDe.Text.Trim();
            if (TieuDe.Length <= 0)
            {
                bKiemTra = true;
                ListMessageNhanTin.Add("* Tiêu đề không được rỗng");
            }

            string NoiDung = txtNoiDung.Text.Trim();
            if (NoiDung.Length <= 0)
            {
                bKiemTra = true;
                ListMessageNhanTin.Add("* Nội dung không được rỗng");
            }

            if (bKiemTra == true)
            {
                return;
            }

            //Thành công
            try
            {
                TinNhanDTO TinNhan = new TinNhanDTO();

                TinNhan.MaNguoiDung = int.Parse(Request.QueryString["MaNguoiDung"].ToString());
                TinNhan.MaNguoiNhanTin = NguoiDungBUS.layNguoiDungTheoTen(TenNguoiNhan).MaNguoiDung;
                TinNhan.TieuDeTinNhan = TieuDe;
                TinNhan.NoiDungTinNhan = NoiDung;
                TinNhan.ThoiGianNhanTin = DateTime.Now;
                TinNhan.Readed = 0;
                TinNhan.Deleted = 0;

                TinNhanBUS.Insert(TinNhan);
                ListMessageNhanTin.Add("Đã gởi !");
            }
            catch (System.Exception ex)
            {
                ListMessageNhanTin.Add("Gởi không thành công !");
            }
        }

        protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
        {
            //int maTinRaoVatDuocChon = int.Parse(GridView1.DataKeys[e.NewEditIndex].Values["MaTinRaoVat"].ToString());
            Session["MaTinRaoVatDuocChon"] = GridView1.DataKeys[e.NewEditIndex].Values["MaTinRaoVat"].ToString();
            Response.Redirect("SuaBaiRaoVat.aspx");//?tinraovat=" + maTinRaoVatDuocChon);
        }

        protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            int maTinDuocChon = int.Parse(GridView1.DataKeys[e.RowIndex].Values["MaTinRaoVat"].ToString());
            TinRaoVatBUS.Delete(maTinDuocChon);
            //SqlDataSource1.DataBind();
            //GridView1.DataBind();
            Response.Redirect("NguoiDung.aspx?MaNguoiDung=" + NguoiDungDuocHien.MaNguoiDung.ToString());
        }

        protected void GridView1_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
        {
            int maTinDuocChon = int.Parse(GridView1.DataKeys[e.NewSelectedIndex].Values["MaTinRaoVat"].ToString());
            Session["MaTinRaoVatDuocChon"] = maTinDuocChon.ToString();
            bool duocPhepUp = UptinBUS.isDuocPhepUp(maTinDuocChon);
            if (duocPhepUp)
            {
                Response.Redirect("UpTinTuDong.aspx");
            }
            else
            {
                //Thông báo không được up
            }
        }


        public List<string> ListMessageThongBao = new List<string>();
        /// <summary>
        /// Nâp cấp tài khoản lên VIP
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnChapNhan_Click(object sender, EventArgs e)
        {
            int AccountId = int.Parse(txtMaTKNganHang.Text);
            //float pass = 100000;
            String pass = txtMatKhauTaiKhoan.Text;
            WebRaoVat.ServiceMyBank.ServiceMyBankClient wsMyBank = new WebRaoVat.ServiceMyBank.ServiceMyBankClient();
            string result = wsMyBank.TransferToGroupB1(AccountId, pass);
            if (result == "Success")
            {
                ListMessageThongBao.Add("Nâng cấp tài khoản thành công !");
                NguoiDungDTO nguoiDung = NguoiDungBUS.layNguoiDungTheoTen(Session["NguoiDungDangDangNhap"].ToString());
                nguoiDung.MaLoaiNguoiDung = 2;
                NguoiDungBUS.Update(nguoiDung);
            }
            else
                ListMessageThongBao.Add("Nâng cấp tài khoản không thành công, xin kiểm tra lại tài khoản!");
        }
    }
}
